﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="FixedPasswordField.cs" company="Marcelo Roca">
//   Copyright (c) 2011 Marcelo Roca. All rights reserved.
// </copyright>
// <author name="Marcelo Roca" email="marce@marceloroca.com"/>
// <license>
//   This program is free software: you can redistribute it and/or modify
//   it under the terms of the GNU General Public License as published by
//   the Free Software Foundation, either version 3 of the License, or
//   (at your option) any later version.
// 
//   This program is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//   along with this program.  If not, see http://www.gnu.org/licenses/.
// </license>
// --------------------------------------------------------------------------------------------------------------------


namespace GameKits.Unity.GuiForms.Controls
{
    using UnityEngine;

    /// <summary>
    /// Draw a texture within a rectangle.
    /// </summary>
    public class FixedTexture : FixedControl
    {
        /// <summary>
        /// Gets or sets Texture to display.
        /// </summary>
        public Texture Image
        {
            get { return this.Content.image; }

            set { this.Content.image = value; }
        }

        /// <summary>
        /// Gets or sets ScaleMode.
        /// </summary>
        /// <remarks>
        /// How to scale the image when the aspect ratio of it doesn't fit the aspect ratio to be 
        /// drawn within.
        /// </remarks>
        public ScaleMode ScaleMode
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets a value indicating whether AlphaBlend.
        /// </summary>
        /// <remarks>
        /// Whether to alpha blend the image on to the display (the default). If false, the picture 
        /// is drawn on to the display.
        /// </remarks>
        public bool AlphaBlend
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets ImageAspect.
        /// </summary>
        /// <remarks>
        /// Aspect ratio to use for the source image. If 0 (the default), the aspect ratio from the 
        /// image is used. Pass in w/h for the desired aspect ratio. This allows the aspect ratio of 
        /// the source image to be adjusted without changing the pixel width and height.
        /// </remarks>
        public float ImageAspect
        {
            get;
            set;
        }

        /// <summary>
        /// Pintamos el control
        /// </summary>
        protected override void DrawControl()
        {
            GUI.DrawTexture(
                this.PositionRect, 
                this.Image, 
                this.ScaleMode, 
                this.AlphaBlend, 
                this.ImageAspect);
        }
    }
}
